package com.rem.designPattern.mediator中介者;

/**
 * 中介者模式
 * 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用，从而使其耦合松散，而且可以独立地改变它们之间的交互
 * <p>
 * 抽象中介者
 *
 * @author Rem
 * @date 2022-11-25
 */
public interface Mediator {

    /**
     * 租房公有联络方法
     *
     * @param message
     * @param person
     */
    void constact(String message, Person person);
}

/**
 * 具体中介者
 * 中介机构
 */
class MediatorStructure implements Mediator {

    private HouseOwner houseOwner;
    private Tenant tenant;

    public void setHouseOwner(HouseOwner houseOwner) {
        this.houseOwner = houseOwner;
    }

    public void setTenant(Tenant tenant) {
        this.tenant = tenant;
    }

    @Override
    public void constact(String message, Person person) {
        if (person == houseOwner) {
            //如果是房主，则租房者获得信息
            tenant.getMessage(message);
        } else {
            //房主获得信息
            houseOwner.getMessage(message);
        }
    }
}